import { Component, OnInit } from '@angular/core';

import { AppSettingService } from '../core/services/app-setting.service';
import { ConfigService } from '../core/services/config.service';
import { ElectronService } from '../core/services/electron.service';
import { MessageService } from '../core/services/message.service';

import * as echarts from 'echarts'

@Component({
    selector: 'op-home',
    templateUrl: './home.component.html',
    styleUrls: ['./home.component.scss']
})
export class HomeComponent implements OnInit {
    fileContent: string;
    remotePath: string = '/opt';
    options: any;

    constructor(
        private appSettingService: AppSettingService,
        private configService: ConfigService,
        private electronService: ElectronService,
        private messageService: MessageService,
    ) { }

    ngOnInit(): void {
        window.setTimeout(() => this.showChart(), 0);
    }

    showMessage(): void {
        this.electronService.showOpenDialog();
        // this.configService.loadLocalGeneralConfig().subscribe((res: any) => this.messageService.showInfo(res.productInfo.productName));
    }

    readFile(): void {
        this.electronService.readFile(this.remotePath, (data) => {
            console.dir(data);
        });
    }

    readTextFile(): void {
        this.electronService.readTextFile(p => this.fileContent = p);
    }

    readTextFileSync(): void {
        this.fileContent = this.electronService.readTextFileSync();
    }

    writeTextFileSync(): void {
        this.electronService.writeTextFileSync('This is testing content');
    }

    loadChart(): void {
        this.electronService.readTextFile(p => this.options = JSON.parse(p));
    }

    connect(): void {

    }

    showChart(): void {
        var base = +new Date(1968, 9, 3);
        var oneDay = 24 * 3600 * 1000;
        var date = [];

        var data = [Math.random() * 300];

        for (var i = 1; i < 20000; i++) {
            var now = new Date(base += oneDay);
            date.push([now.getFullYear(), now.getMonth() + 1, now.getDate()].join('/'));
            data.push(Math.round((Math.random() - 0.5) * 20 + data[i - 1]));
        }

        this.options = {
            tooltip: {
                trigger: 'axis',
                position: function (pt) {
                    return [pt[0], '10%'];
                }
            },
            title: {
                left: 'center',
                text: '大数据量面积图',
            },
            toolbox: {
                feature: {
                    dataZoom: {
                        yAxisIndex: 'none'
                    },
                    restore: {},
                    saveAsImage: {}
                }
            },
            xAxis: {
                type: 'category',
                boundaryGap: false,
                data: date
            },
            yAxis: {
                type: 'value',
                boundaryGap: [0, '100%']
            },
            dataZoom: [{
                type: 'inside',
                start: 0,
                end: 10
            }, {
                start: 0,
                end: 10,
                handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
                handleSize: '80%',
                handleStyle: {
                    color: '#fff',
                    shadowBlur: 3,
                    shadowColor: 'rgba(0, 0, 0, 0.6)',
                    shadowOffsetX: 2,
                    shadowOffsetY: 2
                }
            }],
            series: [
                {
                    name: '模拟数据',
                    type: 'line',
                    smooth: true,
                    symbol: 'none',
                    sampling: 'average',
                    itemStyle: {
                        color: 'rgb(255, 70, 131)'
                    },
                    areaStyle: {
                        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                            offset: 0,
                            color: 'rgb(255, 158, 68)'
                        }, {
                            offset: 1,
                            color: 'rgb(255, 70, 131)'
                        }])
                    },
                    data: data
                }
            ]
        };
    }
}
